home *** CD-ROM | disk | FTP | other *** search
/ Linux Cubed Series 8: LINUX Games / Linux Cubed Series 8 - LINUX Games.iso / games / x11 / strategy / xpat2-1.000 / xpat2-1 / xpat2-1.04 / src / testit2.c < prev    next >
C/C++ Source or Header  |  1995-10-13  |  1KB  |  74 lines

  1. /* a small utility to test the random sequences. needs util.c */
  2. #include <math.h>
  3. #include <limits.h>
  4. #include <stdio.h>
  5.  
  6. #define PRANDMAX 1000000000L
  7.  
  8. #if 1
  9. int rng(int limit) {
  10.     double z;
  11.     z = ((double)(prand()) / (double)PRANDMAX) * (double)limit;
  12.     return (int)z;
  13. }
  14. #endif
  15. #if 0
  16. int rng(int limit) {
  17.     double z;
  18.     z = ((double)(rand() & 32767) / 32768.0) * (double)limit;
  19.     return (int)z;
  20. }
  21. #endif
  22. #if 0
  23. int rng(int limit) {
  24.     return rand() % limit;
  25. }
  26. #endif
  27. #if 0
  28. int rng(int limit) {
  29.     return prand() % limit;
  30. }
  31. #endif
  32.  
  33.  
  34. #define MAXCARDS 52
  35. int cards[MAXCARDS];
  36.  
  37.  
  38. static void shuffle(void) {
  39.     int i, d, v, c;
  40.     int tmp[MAXCARDS];
  41.     for (i = 0; i < 52; ++i)
  42.     tmp[i] = i;
  43.     for (i = 52; i; --i) {
  44.     v = rng(i);
  45.     c = -1;
  46.     do {
  47.         while (tmp[++c] == -1)
  48.         ;            /* skip card */
  49.     } while (v--);
  50.     cards[i-1] = tmp[c];
  51.     /* printf("c = %d, card = %d\n", c, game.cards[i-1]); */
  52.     tmp[c] = -1;
  53.     }
  54. }
  55.  
  56. int cnt[52][10];
  57.  
  58. int main(int c, char *v[]) {
  59.     int i, n = atoi(v[1]);
  60.     memset(cnt, 0, sizeof(cnt));
  61.  
  62.     while (n--) {
  63.     sprand(n+1234567L);
  64.     srand(n+1234567L);
  65.     shuffle();
  66.     for (i = 0; i < 10; ++i)
  67.         ++cnt[cards[i]][i];
  68.     }
  69.     for (i = 0; i < 52; ++i)
  70.     printf("%2d: %6d %6d %6d %6d %6d  %6d %6d %6d %6d %6d\n", i,
  71.            cnt[i][0], cnt[i][1], cnt[i][2], cnt[i][3], cnt[i][4],
  72.            cnt[i][5], cnt[i][6], cnt[i][7], cnt[i][8], cnt[i][9]);
  73. }
  74.